package com.shujia.jinjie;

import org.apache.commons.io.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class HDFSApi {
    public static void main(String[] args) throws Exception{
        //创建hadoop集群配置文件对象
        Configuration conf = new Configuration();

        //设置hdfs主节点
        conf.set("fs.defaultFS","hdfs://master:9000");
        conf.set("dfs.replication","1");

        //创建一个hdfs集群对象
        FileSystem fileSystem = FileSystem.get(conf);

        System.out.println("成功获取hadoop集群对象："+fileSystem);

        System.out.println("----------------------------");
//        //想要在hdfs上创建一个文件夹
//        boolean b1 = fileSystem.mkdirs(new Path("/bigdata33/data"));
//        if(b1){
//            System.out.println("成功创建文件夹！");
//        }else {
//            System.out.println("创建文件夹失败！");
//        }
        //将windows中的一个文件上传到hdfs中
//        fileSystem.copyFromLocalFile(new Path("hadoop/data/words.txt"),new Path("/bigdata33/data/words2.txt"));

        //将hdfs中的一个文件下载到本地
//        fileSystem.copyToLocalFile(new Path("/bigdata33/data/words2.txt"), new Path("hadoop/data/words.txt"));

        //hadoop新版本中提供了一个工具类给我们使用，可以进行上传下载操作
        //上传操作
//        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("hadoop/data/student.txt"));
//        IOUtils.copy(bis,fileSystem.create(new Path("/bigdata33/data/stu1.txt")));


        //下载操作
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("hadoop/data/out1/stu1.txt"));
        IOUtils.copy(fileSystem.open(new Path("/bigdata33/data/stu1.txt")),bos);

        bos.close();
//        bis.close();



    }
}
